跳到主要内容

Courses

OLAP 列压缩

  • Null Suppression
    • 数据中连续的零或空白被替换为有多少和哪里存在的描述。
  • Run-length Encoding
    • 三元组:值、起始位置、长度
    • 需要排序以最大化压缩效率
  • Bitmap Encoding
    • 为特定属性的每个唯一值存储单独的位图
  • Delta Encoding
    • 记录在同一列中相互跟随的值之间的差异(时序)
  • Incremental Encoding
    • 类似 Delta Encoding,字符串公共前缀
    • 解码的时候也需要一行一行地解
  • Mostly Encoding
    • 如果属性的值 “大部分” 小于最大大小,则可以将它们存储为较小的数据类型
    • 将不能压缩的剩余值将以其原始格式存储
  • Dictionary Encoding
    • 用较小的代码替换频繁的模式
    • DBMS 中最普遍的压缩方案
    • 支持范围查询:Order-Perserving Encoding

哈希表

静态 hash 结构

动态 hash 结构

哈希表一般不作为索引的原因

  • 散列,难以范围查找

B+ 树

Homework 2

在进行 Project 2 之前,我先完成了 Homework 2。个人觉得还是很值得做的:一方面,今年 P1 没有考察 Extendible Hash Table 的实现,作业可以巩固这方面知识;另一方面,听完课对 B+Tree 的理解确实还不够,通过作业手动推演插入与删除,也是一次绝妙的体验。

  • Storage Models:考察了对 DSM 和 NSM 的理解,primary key 一定是唯一的。
  • Cuckoo Hashing:最后问哪个数会导致死循环,对于 2 个桶的情况,如果处于替换队列上的 3 个数对 2 个 hash 函数都有相同的结果,就会导致死循环。
  • Extendible Hashing:对「doubles the table’s size」来说,size 是指目前分配的桶的空间大小,还是使用 2global_depth2^{global\_depth} 呢?应该是后者。
  • B+Tree:对于删除操作,课程组提供的可视化程序的结果和选项不太一样(如果想用程序模拟,插入的时候 5/7/22 中的某一个应该最后插入)。